# -*- coding：utf-8 -*-
"""
@Time:2024-08-1817:34
@Auth:泛彼泊舟
@File:4、带有参数的装饰器.py
@IDE:PyCharm
@模块功能：xxx
"""
"""
目前使用的装饰器本身是有且只有一个形参，这个形参用来接收被装饰的函数的引用
如果需要传递多个参数，就需要再嵌套一层函数
带有参数的装饰器案例
"""
# 目前加减法的函数，并没有对应的符号进行判断再输出内容
def mark(flag):     # flag = "+"
    def out_func(func):  # func = add
        def inner_func(num1, num2):     # inner_func(num1, num2) = add(a,b)
            print("你输入的装饰器实参为：{},正在努力计算中。。。".format(flag))
            print("两个数字运算的结果为{}".format(func(num1, num2)))
        return inner_func
    return out_func     # add = out_func(add)

# 执行顺序应该如下：
# @mark("+") = mark("+")
# @mark()
# inner_func = out_func(add)
# inner_func = add

@mark("+")    # mark = mark("+")
def add(a, b):
    return a + b

@mark("-")
def sub(a, b):
    return a - b

# inner_func(num1, num2) = add(a,b)
add(1, 2)
sub(7, 3)